Coarray Fortran in CENTORI and a Sparse Matrix Multiplier Code
نویسنده
چکیده
In modern high performance computers there is a trend towards a hybrid architecture. This hybrid architecture features distributed nodes, each of which contains multiple cores, over which memory is shared. A current challenge in HPC (High Performance Computing) is to find solutions which make the best possible use of hybrid architectures. One possible solution is the use of PGAS (Partitioned Global Address Space) languages. This project aims to investigate the potential of the PGAS language Co-array Fortran (CAF). The investigation is carried out by implementing CAF within key areas of two codes: a sparse matrix multiplier and the fusion code CENTORI. The merit of CAF was investigated by looking at two key aspects of the code produced: the code readability and maintainability, and code performance. A key part of the workings of an iterative solver for sparse linear systems is the multiplication of a sparse matrix by a vector. Code was created which parallelised this multiplication in CAF and OpenMP. The CAF parallelisation was done with both a shared vector and a distributed vector. The process of developing the CAF parallelisation is described. Comparison is made between the performance of the OpenMP parallelisation and the CAF parallelisations. This is done through benchmarks that try to mimic the usage of the sparse matrix multiplication in an iterative solver code. These benchmarks are carried out on the X2, XT4 and XT6 systems. In CENTORI the halo swap mechanisms were implemented in CAF. This was done both with and without buffers, taking advantage of the direct accessing capability of CAF. There were two versions created using buffers, one using single-sided put operations and one using single-sided get operations. Timers were added to the developed and original CENTORI codes, which gave the total time the program soent in halo exchange in each dimension. Benchmarks were carried out on the X2 and XT4 systems. In general the CAF code produced was found to be more readable than MPI implementations. This is further elaborated on within this report, along with the issues encountered in producing CAF implementations.
منابع مشابه
Coarrays, MUSIC, and the Cramér-Rao Bound
Sparse linear arrays, such as co-prime arrays and nested arrays, have the attractive capability of providing enhanced degrees of freedom. By exploiting the coarray structure, an augmented sample covariance matrix can be constructed and MUSIC (MUtiple SIgnal Classification) can be applied to identify more sources than the number of sensors. While such a MUSIC algorithm works quite well, its perf...
متن کاملHybrid Coarrays: a PGAS Feature for Many-Core Architectures
Accelerators such as NVIDIA GPUs and Intel MICs are currently provided as co-processor devices, usable only through a CPU host. For Intel MICs it is planned that this constraint will be lifted in the near future: CPU and accelerator(s) will then form a single, many-core, processor capable of peak performance of several Teraflops with high energy efficiency. In order to exploit the available com...
متن کاملEvaluating Coarray Fortran with the CGPOP Miniapp
The Parallel Ocean Program (POP) is a 71,000 line-of-code program written in Fortran and MPI. POP is a component of the Community Earth System Model (CESM), which is a heavily used global climate model. Now that Coarrays are part of the Fortran standard one question raised by POP’s developers is whether Coarrays could be used to improve POP’s performance or reduce its code volume. Although Coar...
متن کاملMigrating a Scientific Application from MPI to Coarrays
MPI is a de facto standard for portable parallel programming using a message passing paradigm. Interest is growing in other paradigms, in particular Partitioned Global Address Space (PGAS) languages such as Coarray Fortran, UPC and Titanium. Most Computational Science and Engineering codes are written in Fortran, and the 2008 Fortran standard will include coarrays, a Cray initiated PGAS extensi...
متن کاملCompiler and Runtime Approach for Supporting Efficient Execution of Coarray Fortran Programs
Fortran remains a very widely used programming language for technical computing. Fortran coarrays are new elements in the Fortran standard which aim to support the development of parallel programs without requiring the use of external constructs such as libraries (e.g. MPI) or directives (e.g. OpenMP). Coarrays provide a Partitioned Global Address Space (PGAS) approach to parallel programming i...
متن کامل